package com.dp.client.servicios.simulacion;

import java.util.Date;
import java.util.List;

import backend.entry.Mensaje;

import com.dp.client.dto.Fecha;
import com.dp.client.dto.PaqueteDTO;
import com.dp.client.dto.PaqueteEnvio;
import com.dp.client.dto.ResultadosQuerySimulacionDTO;
import com.dp.client.dto.RutasVueloEnvio;
import com.dp.server.backend.PaqueteBackend;
import com.dp.server.backend.RutaDeVueloBackend;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface IServiciosSimulacionAsync {

	void testSimulacion(AsyncCallback<String> callback);
	void obtenerRutas(PaqueteEnvio paquete,
			AsyncCallback<List<RutasVueloEnvio>> callback);
	void correSimulacion(AsyncCallback<String> callback);
	void ejecutaRuta(RutasVueloEnvio ruta, PaqueteEnvio paquete,
			AsyncCallback<Boolean> callback);
	void getCapacidadDisponibleAlmacenEnFecha(String almacenNombre, Date fecha,
			AsyncCallback<Integer> callback);
	void start(AsyncCallback<Void> callback);
	void restart(AsyncCallback<Void> callback);
	void reasignarRuta(PaqueteDTO paqueteDTO, AsyncCallback<Boolean> callback);
	void crearSesionSimulacion(int minutosSesion, int dias,
			AsyncCallback<Integer> callback);
	void cambioCapacidadAlmacen(int idSimulacion, int idAlmacen,
			int nuevaCapacidad, AsyncCallback<Void> callback);
	void cambioCapacidadConexion(int idSimulacion, int idConexion,
			int nuevaCapacidad, AsyncCallback<Void> callback);
	void startSimulacion(int idSimulacion, AsyncCallback<Boolean> callback);
	void getResultadosDeSimulacionParaIntervaloDeTiempo(int idSimulacion,
			Fecha inicio, Fecha fin,
			AsyncCallback<ResultadosQuerySimulacionDTO> callback);
}
